package _02字符流;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;


public class Exercise {

	public static void main(String[] args) throws IOException {
		// 1. 使用记事本新建1.txt 2.txt 写入一些内容
		// * 使用程序读取1.txt,打印输出
		// * 使用程序读取1.txt 将读出的内容写入到3.txt (相当于复制出一个文件3.txt)
		// * 使用程序读取1.txt 2.txt,把内容合并到 4.txt中
		File f1 = new File("d:/abc/1.txt");
		File f2 = new File("d:/abc/2.txt");
		f1.createNewFile();
		f2.createNewFile();
		Writer w1 = new FileWriter("d:/abc/1.txt");
		Writer w2 = new FileWriter("d:/abc/2.txt");
		w1.write("Hello world!");
		w2.write("Hello zhoxu!");
		w1.close();
		w2.close();
		Reader r1 = new FileReader("d:/abc/1.txt");
		char[] buf = new char[50];
		int len = r1.read(buf); 
		String content = new String(buf,0,len);
		System.out.println(content);
		r1.close();
		
		File f3 = new File("d:/abc/3.txt");
		f3.createNewFile();
		Writer w3 = new FileWriter("d:/abc/3.txt");
		w3.write(content);
		w3.close();
		
		
		Reader r2 = new FileReader("d:/abc/2.txt");
		int len1 = r2.read(buf); 
		String content1 = new String(buf,0,len1);
		System.out.println(content1);
		r2.close();
		
		String content2 = content+content1;
		
		File f4 = new File("d:/abc/4.txt");
		f4.createNewFile();
		Writer w4 = new FileWriter("d:/abc/4.txt");
		w4.write(content2);
		w4.close();
		// 2. 让用户输入10个不重复的数字，写入到文件中，使用"\t"分隔
//		File f5 = new File("d:/shuzi.txt");
//		f5.createNewFile();
//		Writer w5 = new FileWriter("d:/shuzi.txt");
//		Set<Integer> s1 = new TreeSet<Integer>();
//		Scanner sc = new Scanner(System.in);
//		System.out.println("请输入10个不重复的数字:");
//		int num;
//		while(s1.size() < 10)
//		{
//			num = sc.nextInt();
//			s1.add(num);
//		}
//		for(Integer i:s1)
//		{
//			System.out.println(i);
//			w5.write(i+"\t");
//		}
//		w5.close();
		// 3.
		// 使用记事本新建一个文本内容 d:\sanguozhi.txt 输入以下数据:
		// 10001,曹操,97,95,98
		// 10002,刘备,93,90,91
		// 10003,孙权,90,87,92
		// 10004,吕布,80,100,95
		// 10005,关羽,85,98,98
		// 创建一个学生类 有以下属性:学号,姓名,智力,武力,统帅
		// 使用字符流从sanguozhi.txt将信息读出，放入到一个学生对象容器中中
		// 提示: 读出的字符串先使用\r\n进行分割 得到每一行的数据，再用,号分割，得到每个属性数据
		// String 分割字符串方法 split 查文档

		// windows下 编辑文本 按一下回车 实际上包含2个字符 \r\n
		
		
		File f6 = new File("d:/sanguozhi.txt");
		f6.createNewFile();
		
		Writer w6 = new FileWriter("d:/sanguozhi.txt");
		w6.write("10001,曹操,97,95,98"+"\r\n"+"10002,刘备,93,90,91"+"\r\n"+"10003,孙权,90,87,92"+"\r\n"+"10004,吕布,80,100,95"+"\r\n"+"10005,关羽,85,98,98");
		w6.close();
		
		
		Reader r3 = new FileReader("d:/sanguozhi.txt");
		char[] buf1 = new char[100];
		int len2 = r3.read(buf1); 
		String content3 = new String(buf1,0,len2);
		r3.close();
		
		List<Student> l1 = new ArrayList<>();
		
		String[] split = content3.split("\r\n");
		for(String str:split)
		{
			System.out.println(str);
			String[] split1 = str.split(",");
			l1.add(new Student(split1[0], split1[1], split1[2], split1[3], split1[4]));
		}
		
		System.out.println(l1);
		
		
		
		
	}
}
